<?php
/**
* EasySEF - SEF component for Joostina CMS.
* @author:      Лаборатория сайтов, http://sitelab.net.ru
* @version:     1.1
* @release:     2010.01.07
* @package:     com_sef
* @copyright:   (C) 2010 http://sitelab.net.ru, see /administrator/components/com_sef/copyright.php
* @license:     http://www.gnu.org/copyleft/gpl.html GNU/GPL
*
* Cоздан на базе sh404SEF  (C) 2007 by Yannick Gaultier
**/
 
defined( '_VALID_MOS' ) or die('');

// V 1.2.4.t retrieve stored modules config if needed
function shGetModuleSavedParams( $modName, &$shConfig, &$shPub, $sefConfig) {
  global $mosConfig_absolute_path, $mosConfig_live_site;
  if (empty($sefConfig)) return;
  $moduleFile = $mosConfig_absolute_path.'/media/easysef_upgrade_'.$modName.'_'
  .str_replace('/','_',str_replace('http://', '', $mosConfig_live_site)).'.php';
  if (!$sefConfig->shKeepModulesSettingsOnUpgrade) {  // we've been told not to preserve modules settings so erase file
    @unlink($moduleFile);
  } else {  // we want to read settings for this module
    if (file_exists($moduleFile))
    include($moduleFile);
  }
}

function shInsertModule( $modName, $shConfig, $shPub, $sefConfig ) {
  $database = &database::getInstance();

  shGetModuleSavedParams( $modName, $shConfig, $shPub, $sefConfig );
  $sql = "INSERT INTO `#__modules` (`title`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `published`, `module`, `numnews`, `access`, `showtitle`, `params`, `iscore`, `client_id`) VALUES ('".$shConfig['title']."', '', ".$shConfig['ordering'].", '".$shConfig['position']."', 0, '0000-00-00 00:00:00', ".$shConfig['published'].", '".$modName."', 0, ".$shConfig['access'].", ".$shConfig['showtitle'].", '".$shConfig['params']."', 0, 0);";
  $database->setQuery( $sql);
  $database->query();
  $moduleID = $database->insertid();
  // set pages where module is published
  foreach ($shPub as $pub) {
    $database->setQuery( "INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES ($moduleID, $pub);");
    $database->query();
  }
}

function com_install()
{
  $database = &database::getInstance();
  global $mosConfig_absolute_path, $mosConfig_live_site;

  // V 1.2.4.t improved upgrade data preservation
  // V 1.2.4.q Copy existing config file from /media to current component. Used to recover configuration when upgrading
  // V 1.2.4.s check if old file exists before deleting stub config file
  $adminDir = dirname(__FILE__);
  $oldConfigFile = $mosConfig_absolute_path.'/media/easysef_upgrade_conf_'
  .str_replace('/','_',str_replace('http://', '', $mosConfig_live_site)).'.php';
  if (is_readable($oldConfigFile)) {
    @unlink($adminDir. '/config/config.easysef.php');
    @copy( $oldConfigFile, $adminDir. '/config/config.easysef.php' );
  }
  // restore log files
  if ($handle = @opendir($mosConfig_absolute_path.'/media/easysef_upgrade_conf_logs')) {
    while (false !== ($file = readdir($handle))) {
      if ($file != '.' && $file != '..')
      @copy($mosConfig_absolute_path.'/media/easysef_upgrade_conf_logs/'.$file,
      $adminDir.'/logs/'.$file);
    }
    closedir($handle);
  }
  // restore black/white lists
  if ($handle = @opendir($mosConfig_absolute_path.'/media/easysef_upgrade_conf_security')) {
    while (false !== ($file = readdir($handle))) {
      if ($file != '.' && $file != '..') {
        @unlink($adminDir.'/security/'.$file);
        @copy($mosConfig_absolute_path.'/media/easysef_upgrade_conf_security/'.$file,
        $adminDir.'/security/'.$file);
      }
    }
    closedir($handle);
  }
  // restore customized default params
  $oldDefaultConfigFile = $mosConfig_absolute_path.'/media/easysef_upgrade_conf_'
  .str_replace('/','_',str_replace('http://', '', $mosConfig_live_site)).'.default.php';
  if (is_readable($oldDefaultConfigFile) && filesize($oldDefaultConfigFile) > 1000) {
    @unlink($adminDir. '/default.sef.php');
    @copy( $oldDefaultConfigFile, $adminDir. '/default.sef.php' );
  }
  $sef_config_class = $GLOBALS['mosConfig_absolute_path']."/administrator/components/com_sef/easysef.class.php";
  // Make sure class was loaded.
  if (!class_exists('SEFConfig')) {   // V 1.2.4.T was wrong variable name $SEFConfig_class instead of $sef_config_class
    if (is_readable($sef_config_class)) require_once($sef_config_class);
    else die(_COM_SEF_NOREAD."( $sef_config_class )<br />"._COM_SEF_CHK_PERMS);
  }
  $sefConfig = new SEFConfig();

  ob_start();
  //this code is adapted from the install file of Joomfish 1.7

  // meta module install
  $shConfig = array('title'=>'EasySEF Custom tags module', 'ordering'=>2,'position'=>'user3','published'=> 0,'access'=>0,'showtitle'=>0,'params'=>'');  // V 1.2.4.T preserve config
  $shPub = array('0');
  shInsertModule( 'mod_easysef_custom_tags', $shConfig, $shPub, $sefConfig);
   
  @rename( $adminDir. '/modules/mod_easysef_custom_tags.php',
  $mosConfig_absolute_path.'/modules/mod_easysef_custom_tags.php');
  @rename( $adminDir. '/modules/mod_easysef_custom_tags.tmp',
  $mosConfig_absolute_path.'/modules/mod_easysef_custom_tags.xml');

  // end of code adapted from Joomfish 1.7 install file

  // success !
  echo '<div style="text-align: justify;">';
  echo '<h1>EasySEF успешно установлен! Пожалуйста, прочтите следующее:</h1>';
  echo 'Если это первый запуск EasySEF, обратите внимание - он был установлен, но <strong> отключен </strong> прямо сейчас. Сначала нужно войти в конфигурацию EasySEF, <strong>включить его и сохранить</strong>, прежде чем он станет активным. Кроме того, необходимо активировать <strong> SEF URL в Глобальной конфигурации сайта </strong> на вкладке SEO. Перед тем, как сделать это, пожалуйста, прочитайте следующие пункты, которые содержат важную для вас информацию. При обновлении с предыдущей версии EasySEF, все ваши настройки были сохранены, компонент будет активирован, и можно начать просмотр главной страницы вашего сайта сразу.';
  echo '<br /><br />';
  echo '<strong><font color="red">ВНИМАНИЕ</font></strong> : EasySEF может работать в 2 режимах: <strong><font color="red">С ВКЛЮЧЕННЫМ</font></strong> или <strong><font color="red">С ВЫКЛЮЧЕННЫМ .htaccess</font></strong> файлом. По умолчанию сейчас компонент работает <strong>с выключенным .htaccess файлом</strong>. Рекомендуется использовать его, если вы затрудняетесь составить правильные правила для .htaccess файла.<br /><br />';
  echo '<strong>С выключенным .htaccess</strong> файлом: просто перейдите в конфигурацию EasySEF, настройте параметры и сохраните. Помните также, что необходимо установить параметр SEF URL = Да в Глобальной конфигурации сайта. Когда вы это сделаете, Joostins напомнит вам, что нужно переименовать htaccess.txt в .htaccess. Это не требуется при использовании EasySEF режиме  с выключенным .htaccess файлом (все остальные компоненты SEF до сих пор требуют .htaccess файла). Теперь Вы можете перейти на Главную страницу сайта, чтобы начать генерацию SEF URL.<br />';
  echo '<strong>С включенным .htaccess</strong> файлом: этот режим нужно активировать. Для этого перейдите в конфигурацию EasySEF, выберите вкладку Расширенные настройки, установите "Режим" в положение \'с .htaccess\'. Сохраните конфигурацию и ответьте OK для очистки кэша URL. Однако, прежде чем активировать EasySEF, вы должны настроить .htaccess файл. Содержимое файла зависит от ваших настроек хостинга, так что почти невозможно сказать вам, что должно быть в нем. Joostina поставляется со стандартным .htaccess файлом. Скорее всего, он будет работать сразу на вашей системе, или, возможно, потребуется корректировка. Joostina поставляется с файлом, который называется htaccess.txt, расположеным в корневом каталоге вашего сайта, и его нужно переименовать в .htaccess, иначе он не будет иметь никакого эффекта. Помните также, что необходимо установить параметр SEF URL = Да в Глобальной конфигурации сайта.<br /><br />';
  echo '<strong><font color="red">ВНИМАНИЕ</font><strong>: с EasySEF можно построить SEF URL для многих компонентов Joostina. Он делает это посредством <strong>системы плагинов</strong>, и поставляется со специальным плагином для каждого из стандартных компонентов Joostina (контакты, ссылки, новостная лента, контент и др.). Он также поставляется с родными плагинами для других компонентов, таких как Community Builder, Fireboard, JoosMart, SOBI2, и др. (<a href="http://code.google.com/p/easysef/" target="_blank"> полный список на нашем веб-сайте </a>). EasySEF также может автоматически использовать плагины, предназначенные для других SEF компонентов, таких как OpenSEF или SEF Advanced. Такие плагины зачастую поставляются и устанавливаются автоматически при установке компонента. Пожалуйста, обратите внимание, что при использовании этих "чужих" плагинов, у вас могут возникнуть проблемы с совместимостью. <br /> Однако, не для всех компонентов, совместимых с Joostina, есть плагины для EasySEF. Когда не имеется плагина для данного компонента, EasySEF будет использовать стандартным Joostina SEF URL, вроде такого -  mysite.com/component/option,com_sample/task,view/id,23/Itemid,45/. Это нормально, но может быть иначе, если кто-то напишет плагин для этого компонента (ваша помощь в этом очень приветствуется!). Пожалуйста, сообщите на форуме поддержки, если вы написали плагин для компонента.<br />';
  echo '<br />';
  echo  '<p class="message">Пожалуйста, прокрутите вниз и прочитайте эту документацию. <br/> Она также доступна в главной панели управления EasySEF.</p>';

  include($GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sef/readme.inc.php');

  $output = ob_get_contents();
  ob_end_clean();

  return $output;
}
?>